package de.axa.smartfix.monitoring.model;

import java.util.ArrayList;
import java.util.List;

public class CompositeMonitor extends AbstractMonitor {

	private List<IMonitor> monitors;

	public CompositeMonitor() {
		this.monitors = new ArrayList<IMonitor>();
	}

	@Override
	public void add(IMonitor e) {
		this.monitors.add(e);
		e.setParent(this);
		fireEvent();
	}

	@Override
	public void clear() {
		for (IMonitor monitor : this.monitors) {
			monitor.setParent(null);
		}
		this.monitors.clear();
		fireEvent();
	}

	@Override
	public void remove(IMonitor e) {
		this.monitors.remove(e);
		e.setParent(null);
		fireEvent();
	}

	@Override
	public IMonitor[] getChildren() {
		if (this.monitors.size() > 0)
			// super.getChildren wird genutzt um den Typ des Arrays von toArray
			// zu bestimmen, der Inhalt wird nicht verwendet
			return this.monitors.toArray(super.getChildren());
		return super.getChildren();
	}
}
